package com.example.validate.pojo;

import org.hibernate.validator.constraints.Length;
import org.springframework.lang.NonNull;

import javax.validation.constraints.*;
import java.util.List;

public class User {
    /**
     * 1.对基本数据类型的对象类型做非null校验
     * 2.message = 用于显示该用户默认的错误提示信息
     * 但是这样耦合度太高了，不建议使用
     * 3.将错误提示信息放在ValidationMessages.properties中（文件名只能是这个）
     * Hibernate-validator 校验框架 只能读取 ValidationMessages.properties
     * 4.可以通过{userId.notNull} （key可以在properties文件中随意定义）来获取ValidationMessages.properties中的value
     * 5.因为properties文件只能识别asc码，
     * 所以可以使用java/bin 目录下的native2ascii 命令完成将中文转码
     * 先输入native2ascii，会车，再输入需要转码的中文
     */
    /*@NotNull(message = "用户id不可以为null")*/
    @NotNull(message = "{userId.notNull}")
    private Integer userId;

    /**
     * @NotBlank 对字符串类型做非null校验
     * @Length 限定字符串的长度
     */
    //@NotBlank/*(message = "用户名不能为空")*/
    @NotBlank(message = "{userName.notBlank}")
    @Length(min = 2,max = 5,message = "字符串长度只能在2-5之间")
    private String userName;

    /**
     * 对集合类型做非null校验
     */
    //@NotEmpty/*(message = "兴趣爱好不嫩为空")*/
    @NotEmpty(message = "{hobby.notEmpty}")
    private List<String> hobby;

    /**
     * 限定数值的最大最小值
     */
    @Min(value = 10,message = "不得低于10岁")
    @Max(value = 70,message = "不得高于70岁")
    private Integer age;

    /**
     * 判断邮箱是否合法
     */
    @Email(message = "邮箱不合法")
    private String email;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public Integer getUserId() {
        return userId;
    }

    public void setUserId(Integer userId) {
        this.userId = userId;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }

    public List<String> getHobby() {
        return hobby;
    }

    public void setHobby(List<String> hobby) {
        this.hobby = hobby;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }
}
